package conductores;

import java.util.Iterator;



public class EstadoInicial1 implements IEstadoInicial {

	@Override
	public void execute(Board board) {
 System.out.println("Generamos el estado inicial complejo:Cada usuario es recogido por el conductor mas cercano al punto de sal del usuario");
    	//asignamos al usuario el conductor mas cercano a la posición origen del usuario.
 		//Lo hacemos de manera que un conductor recoge y deja al usuario antes de recoger a un nuevo usuario
 		//No se tiene en cuenta la hora de llegada del conductor
         int u = 0;
         
         if(board.conductores.size()!=0){
        	 int DistMin;
        	 Conductor MasCercano;//conductor mas cercano
        	 Conductor conductor;//conductor a tratar
        	 
         while( (board.pendientes.size() > 0) )
         {
        	 Iterator<Conductor> it = board.conductores.listIterator();
        	 MasCercano =board.conductores.get(0);//iniciamos el primer conductor como el mas cercano
        	  DistMin= (Context.SIZE*Context.SIZE); //distancia a reducir será mayor a la diagonal del cuadrado
        	  //System.out.println("------Empiezaaa-----"+DistMin+"-----Usuario"+pendientes.get(u));
        	 while(it.hasNext()){
             conductor = (Conductor) it.next();
             
             	if (DistMin>conductor.CalculaDistanciaConductorUsuario(board.pendientes.get(u) )) {
             		//caso en que el actual  sea el mas cercano al usuario tratado
             		DistMin=conductor.CalculaDistanciaConductorUsuario(board.pendientes.get(u) );
             		MasCercano=conductor;
             		
                } 
             	      
        	 }
        	 board.opMeter(MasCercano, board.pendientes.get(u), 0, 1);
        	
        	 
         }
         
         System.out.println(" -----------------------------Queda así");
         board.Lapo2();
         System.out.println(" --------------------------------------");
         
         //board.print_board();
         
         
     }
    	
       

	}
 



}
